package com.yonyou.pmclouds.plan.rmiitf;

import com.yonyou.pmclouds.basecom.exception.BusinessException;
import com.yonyou.pmclouds.plan.entity.ScheduleReportVO;
import com.yonyou.pmclouds.plan.entity.ScheduleVO;
import com.yonyou.pmclouds.project.entity.ProjectViewVO;

/**
 * @Description: 进度计划编制服务类
 * @Author: zhangzhonghao
 * @Date: 2020-03-06
 */
public interface IScheduleService {

    /**
     * 新增计划编制
     * @param scheduleVO 计划编制数据VO
     * @return 保存后计划编制VO
     */
    ScheduleVO insert(ScheduleVO scheduleVO) throws BusinessException;

    /**
     * 删除计划编制
     * @param scheduleVO 计划编制数据VO
     * @return 计划编制数据VO
     */
    ScheduleVO delete(ScheduleVO scheduleVO) throws BusinessException;

    /**
     * 更新计划编制
     * @param scheduleVO 计划编制数据VO
     * @return 计划编制数据VO
     */
    ScheduleVO update(ScheduleVO scheduleVO) throws BusinessException;

    /**
     * 填报更新计划进度
     * @param reportVO 填报数据
     * @return 填报结果
     */
    ScheduleReportVO updateProgress(ScheduleReportVO reportVO) throws BusinessException;

    /**
     * 计划编制审批流提交
     * @param scheduleVO 计划编制数据VO
     * @return 计划编制数据VO
     */
    ScheduleVO commit(ScheduleVO scheduleVO) throws BusinessException;

    /**
     * 计划编制调整
     * @param scheduleVO 计划编制数据VO
     * @return 计划编制数据VO
     */
    ScheduleVO updateScheduleForAdjust(ScheduleVO scheduleVO) throws BusinessException;

    /**
     * app端当没有填报任务时，添加默认指标计划
     * @param scheduleVO 计划编制数据VO
     * @return 计划编制数据VO
     */
    ScheduleVO addDefault(ScheduleVO scheduleVO) throws BusinessException;

    /**
     * 根据模板自动生成计划
     * @throws BusinessException
     */
    void savePlanAuto(ProjectViewVO projectViewVO) throws BusinessException;


}
